home *** CD-ROM | disk | FTP | other *** search
/ GRAVIS Top 100 #5 / GRAVIS CD No5_Herbst_95.cdr / GRAVIS / PD ⁄ Shareware / Anwendungen / PlainText 1.6 / PlainText Worksheet < prev   
Text File  |  1995-07-11  |  36KB  |  688 lines

  1. ;----------------------------------------------------------------------------
  2. ;                                 Worksheet
  3. ;
  4. ; Use this window as a scratch pad for keeping notes and as a space for 
  5. ; temporary and intermediate work. Its contents are saved between launches
  6. ; of the PlainText program. If you don’t like the idea of having a Worksheet
  7. ; that is always open, select the “No Worksheet” option in the Edit Menu.
  8. ;
  9. ;                                            Mel Park, Memphis, Tennessee
  10. ;----------------------------------------------------------------------------
  11.  
  12.     This is the documentation for version 1.6 of PlainText. Be sure to read 
  13. the section ‘Fat Binary’ that appears later in this document.
  14.     
  15.     You should make a copy of this file and save it somewhere with a different
  16. name. One way of doing this is to select the “Save a Copy” item from the
  17. File Menu. Name the copy “Original PlainText Worksheet” or some such.
  18.  
  19. File Menu
  20.     This is standard Mac stuff. PlainText will open any text file. Printing is
  21. pretty ordinary. There is no way to change print margins or lines per page.
  22. A short vertical line appears at the top of every text window which indicates 
  23. the recommended right margin. Text wrapped to this width will be centered on 
  24. the printed page. PlainText prints the page number at the bottom of every page.
  25.     
  26.     If you hold the option key down while selecting the Open menu item, then
  27. all files, not just text files, are displayed and can be opened. Files opened 
  28. in this way are read only. You can copy data from them to the clipboard but 
  29. not change them in any way.
  30.  
  31.     The “Save” menu item is activated when a file has been changed by adding or
  32. removing characters. The term “dirty” is commonly used to describe text files
  33. in this state. Non-editing changes, such as changing the font or adding a mark
  34. do not dirty a file. However, all such changes, even scroll position and
  35. selection range, are always saved to disk when you close a file. So, don’t be
  36. surprised by disk activity when you close a file in which you have made no text
  37. changes.
  38.  
  39.     The “Save” menu item is also active when a non-PlainText file is opened and
  40. that file does not contain the resource that PlainText, and many other 
  41. Macintosh text editors, use to store window size, selection, and several other
  42. parameters. Selecting “Save” will cause that resource to be created.
  43.  
  44. Edit Menu
  45.     The Undo function provides the one level of undo that you expect with a
  46. Macintosh application. Likewise the Cut, Copy, Paste, and Clear routines work
  47. in the standard Macintosh fashion. However, their action can be changed by the
  48. “Edit Columns” menu item. Clicking on this item toggles column editing on or 
  49. off. Column editing is only allowed when a fixed font such as Monaco or Courier 
  50. is in use. The “Edit Columns” menu item is not even enabled when a proportional
  51. font is being used.
  52.  
  53.     With column editing enabled, cutting and clearing text operates on every
  54. line in the text file, cutting or clearing a vertical column of characters
  55. corresponding to the selection range. This column is shown by a rectanglar
  56. dotted outline. Note that this column selection range disappears when the 
  57. normal selection range extends across more than one line. Column pasting will
  58. insert the columns contained in the clipboard into every line, along the 
  59. vertical column indicated by the selection range. 
  60.  
  61.     “Shift Right” and “Shift Left” add or remove one tab on each line or, 
  62. when word wrap is on, each paragraph within the selection region. At the 
  63. same time, it converts all space runs to the corresponding number of tabs.
  64. “Align” aligns all subsequent lines to the first line in the selection
  65. region.
  66.  
  67.     “No Worksheet” will close the worksheet window and set PlainText to not
  68. open a worksheet window in the future. It is reversed by the “Use Worksheet”
  69. menu item which becomes an option when there is no worksheet. When in the
  70. No-Worksheet mode, PlainText will open a blank untitled window, like most Mac
  71. applications, when lauched. The Format dialog of the Edit Menu is where you
  72. select fonts and font size, turn wordwrapping on or off (ON is the default),
  73. select tab width, and show or not show invisible characters. These settings are
  74. remembered for each document and retained between launches. (Naturally, this is
  75. a Mac.)
  76.  
  77.     The “Format…” menu item calls a dialog for changing text font, text size,
  78. and certain preferences. The “Show Invisibles” check box prints ‘¿’ for all
  79. non-printing characters, ‘Δ’ for tabs, ‘¬’ for carriage returns, and ‘◊’
  80. for spaces. Automatic word wrap can be turned off or on and made to occur
  81. when text exceeds the width of the text’s window or a particular number of
  82. characters (Line Length). This line length parameter is also used for the
  83. “Hard Wrap to Length” item in the Convert Menu. The “Auto Indent” feature
  84. will look at the preceding line, when word wrap is off, or paragraph, when
  85. word wrap is on, and indent each new line to align with it. Clicking the
  86. okay button (or typing the return or enter key) applies those settings to
  87. the front window. Clicking the cancel button (or typing escape or
  88. command-period) cancels the dialog and does not make any changes to the
  89. front window. Clicking on the “All Files” button applies the settings to
  90. the front window and saves them as default settings that will be applied to
  91. all new windows and any foreign file that has not been previously opened by
  92. PlainText, MPW, or Alpha.
  93.  
  94.     Note that “Show Invisibles” is also a menu item that is equivalent in
  95. to clicking the “Show Invisibles” check box in the Format dialog.
  96.  
  97. Find Menu
  98.     “Find, Replace…” implement the pretty standard and pretty intuitive search
  99. and replace functions for text windows. The search string can be a
  100. selection expression, that is, an expression that contains wildcards. (See
  101. the “Selection Expression” section, below. Try a search using *menu as the
  102. selection expression. Choose “Find…” and type “*menu” (without the quotes)
  103. and click the “Selection Expression” radio button. Now click the Find
  104. button (or hit the return key). See how a line containing “menu” has been
  105. found? Command-G repeats the search.
  106.  
  107.     If the selection expression is a number, it is interpreted as a line
  108. number. Try 111 as a selection expression.
  109.  
  110.     This line, the 111th in this window, will be selected.
  111.  
  112.     If you hold down the shift key when you choose any of the Find menu items,
  113. then the search will be in the reverse direction. This is handiest when
  114. used in conjunction with the keyboard equivalents command-H and command-G.
  115.  
  116.     “Cut Lines Containing…” and “Copy Lines Containing…” allow you to cut or 
  117. copy all lines, or paragraphs if word wrap is on, to the clipboard. Note that
  118. there are command line equivalents, “cutline and “copylines” (see below).
  119.  
  120. Mark Menu
  121.     The Mark Menu handles two separate types of actions that can be used to
  122. mark text. (1) Bookmarks can be set at points in the text that you want to be
  123. able to jump back to. (2) Line numbers or other kinds of textual labelling 
  124. can be added to or removed from the begining of each line or paragraph. 
  125.     
  126.     The line numbering functions allow you to add or strip line or paragraph
  127. numbers from your text. Interesting enough, it is also useful for adding or
  128. removing characters to comment out blocks of computure code. Study the 
  129. “Numbering Parameters…” dialog. It does the simple things, like allowing you 
  130. to specify starting number and the numbering interval. It also allows you to 
  131. specify a prefix and suffix string to immediately precede and immediately 
  132. follow each line number and it allows three numbering modes: Arabic numerals, 
  133. Roman numberals (either upper or lower case), or an Alphabetic sequence (either
  134. upper or lower case, such as A, B, C, … z, aa, ab, etc.). To switch numbering 
  135. style either delete all the characters of the “Starting Number” dialog item and
  136. type in a new entry in the style you want (e.g. “xiv”) or repeatedly click on 
  137. the small style button to the right of the “Starting Number” dialog item.
  138.  
  139.     Marks are like bookmarks that you can place in a text file so that you 
  140. can recall previous selections. When you select a mark from the Mark Menu, 
  141. the text corresponding to that mark is selected and the window scrolls to 
  142. show it. You can add new marks with the Mark menu item and remove them with
  143. Unmark. You can alphabetize the order in which marks are displayed in the
  144. Mark Menu by selecting the Alphabetize menu item. Selecting it again restores 
  145. the original order. Look at the Marks that I have made for this file by 
  146. opening the Marks Menu.
  147.  
  148. Window Menu
  149.     Stack and Tile Windows resize the windows in either a stack or tiled so
  150. that each window is visible on the screen. The remaining menu items are a 
  151. catalog of open windows. The menu item for the front window is checked. The 
  152. target window is indicated by the bullet symbol (•). Windows whose changes 
  153. have not yet been saved to disk are underlined.
  154.  
  155. Convert Menu
  156.     This is a set of useful functions for converting or otherwise editing
  157. text. These functions have been requested by users or was selected from
  158. those I found myself using many times a day in Vantage, the desk accessory
  159. editor that I used for years. The big, full-featured editors, like Pete
  160. Keleher’s Alpha and BBEdit, by Rich Siegel, have these features, plus many
  161. more, as well.
  162.  
  163.     Strip Linefeeds is the way to convert an MS/DOS text file to the Mac
  164. convention.
  165.  
  166.     Strip Controls removes all characters with an Ascii code of 31 or less,
  167. except carriage returns and tabs.
  168.  
  169.     Form Paragraphs and Straight to Curly Quotes do what they say they do and
  170. are indispensible for preparing text for pasting into a word processor. 
  171.     Hard Wrap to Window and Curly to Straight quotes reverses those steps,
  172. such as when you want to prepare text for e-mail.
  173.  
  174.     The two Hard Wrap functions insert hard carriage returns at line ends,
  175. where a line end is defined either by the width of the window (Hard Wrap to
  176. Window) of the line length parameter set in the Format Dialog (Hard Wrap to
  177. Length).
  178.  
  179.     The “Strip Line Numbers” function will remove any leading digits in a 
  180. text file, and leading characters that conform to the currently selected
  181. numbering convention (Arabac, Roman, or Alpha) and concatinations of the
  182. latter with the prefix and suffix strings.
  183.  
  184.     The last two menu items will sort lines or paragraphs in either ascending
  185. or descending order. Marks remain correctly attached to the text they reference.
  186.  
  187. Typing Behavior
  188.  
  189.     Besides being fast and able to handle even very large files, PlainText has
  190. these built-in features:
  191.  
  192.     1.    Double-clicking selects a whole word. Note that double-clicking
  193.         the space after a word selects the preceeding word and the space.
  194.         This is a bug that is close enough to being a feature that I am 
  195.         not fixing it.
  196.     2.    Triple-clicking selects a whole line.
  197.     3.    Double clicking on or just before a bracket or parenthesis (i.e. 
  198.         “[”, “{”, etc.) causes all the text between the bracket or 
  199.         parenthesis and its matching bracket or parenthesis to become 
  200.         selected.
  201.     4.    Cutting, pasting, and undoing are fully implemented.
  202.     5.    The arrow keys work to move the insertion point or selection (hold
  203.         the shift key down) in the expected ways.
  204.     6.    Command-option-uparrow moves the insertion point to the top of the
  205.         file. Command-option-downarrow does the opposite. Holding the shift
  206.         key down while doing either of these extends the selection to either
  207.         the top or bottom of the document.
  208.     7.    Command-right arrow moves the insertion point to the end of the 
  209.         current line. Option-right arrow moves the cursor by words. The left
  210.         arrow combinations work in the same way, of course, and holding the
  211.         shift key down with any of these combinations extends the selection.
  212.         This is the standard Macintosh use of the arrow keys.
  213.     8.    It is a command-line interpreter in its own right. Simply type a 
  214.         command that PlainText understands and then hit the enter (not
  215.         return) key. This will work in any text window.
  216.  
  217.         The following commands can be executed from any text window: 
  218.         ls (same as dir in DOS), cd (change directory), chcre (change file
  219.         creator), chtyp (change file type, copylines, cutlines, file, open,
  220.         find, line. “Open” opens the named file and makes it the front window.
  221.         File is similar except the window is made the target window (second
  222.         from front). “line n” selects selects the nth line of the target
  223.         window (n is a number. “Find exp” searchs the target window for the
  224.         string “exp.” If there are embedded spaces within the search string,
  225.         enclose it in double (") or single (') quotes. Enclosing the search
  226.         string with the right slash (/) will cause it to be interpreted as
  227.         a regular expression. (See “Selection Expressions,” below.) The same
  228.         rules apply for the search strings used for the "copylines" and
  229.         "cutlines" commands. If there is a standard set of lines, like
  230.         e-mail headers, that you need to remove from files on a regular
  231.         basis, save a list of appropriate cutlines commands in your work-
  232.         sheet.
  233.  
  234.         In summary, hitting the enter key causes the current line or current 
  235.         selection, whichever is smaller, to be interpreted as a command line.
  236.  
  237.         Commands implemented:
  238.  
  239.             cat f,f...     An Untitled window is opened and each of the files
  240.                          in the file list (f,f,...) is concatenated into it.
  241.                          The file names can be separated by whitespace or
  242.                          commas.
  243.             cd             Change default directory (folder). Note, the Mac 
  244.                          file system uses the colon to designate the present 
  245.                          or higher folders. Thus “cd ::” changes the default
  246.                          directory one level up.
  247.             chcre         Change a file’s creator. For example, 
  248.                          chcre ‘MRPH’ ‘Current File’ makes PlainText the
  249.                          creator of the file named ‘Current File.’
  250.             chtyp         Change the file type of a file, using the same
  251.                          syntax (chtyp type filename) as chcre.
  252.             copylines ss copy all lines containing the search string, ss.
  253.             cutlines ss  cut all lines containing the search string
  254.             dump         performs a hex dump of the target window’s selection
  255.                           range.
  256.             fat2PPC ff     if ff is the name of a fat binary application, then 
  257.                           powerPC version is created, named ff.PPC.
  258.             fat268k ff   strips off the PowerPC code to make a fat binary a
  259.                           68K Mac version.
  260.             file         Open a file and make it the target
  261.             find ss         Find a string in the target window
  262.             ls             List a directory’s contents
  263.             ls -l         Give a full listing of a directory’s contents
  264.             line nn         Select line nn in the target window
  265.             open ff         Open file named ff.
  266.             p nn         Selects the nnth paragraph of the target window.
  267.             pwd             Print current directory.
  268.             stats         Prints the statistics of the target window
  269.             toolserver     Launch ToolServer and use it for command-line
  270.                           interpretation.
  271.  
  272. Target Window
  273.     Note that the “line” and “find” comands operate on the TARGET window. The
  274. target window is the window behind the front-most window.
  275.  
  276. Large Files
  277.     PlainText must load its text files entirely into memory. If you get an
  278. out-of-memory error message when trying to open a very large file, just
  279. increase the partition (in the Finder’s Get-Info box for PlainText) to be
  280. larger than the file being opened. In System 7, turn on virtual memory if
  281. necessary.
  282.  
  283. Selection Expressions
  284.  
  285.     PlainText implements a subset of the regular expressions as implemented in
  286. unix and related to those implemented in MPW. The search string is interpreted
  287. as a regular expresson when the  “Selection Expression” radio button is 
  288. selected in the “Find and Replace” or “Cut/Copy Lines Containing” dialogs.
  289.     
  290.     When ToolServer is being used, the full set of ToolServer selection 
  291. expressions is of course implemented in command-line commands.
  292.  
  293. The following is the native PlainText implementation:
  294.  
  295. Wildcards
  296.     * and ≈ (option-x) select any text from the beginning of a line or to 
  297.     the end of a line.
  298.     ? selects any single character.
  299. Sets
  300.     Characters appearing between square brackets represents a set, any one 
  301.     of which will be a valid match. Sets can include ranges. A range is 
  302.     represented by two characters separated by a hyphen. They will match 
  303.     any character with an ascii code within the range. Thus [0-9] (or [0-9])
  304.     will match any digit. [a-z] will match any lower-case letter. If the 
  305.     “Case Sensistive” check box is off, the [a-z] is the same as [a-zA-Z]. 
  306. Repeats
  307.     The plus sign (+) following any character or a set will match a sequence 
  308.     of one or more of the preceeding set or character.
  309. Special characters and escape
  310.     Any ascii code can be represented as a two-digit hex following the dollar
  311.     sign ($) or it’s equivalent on your international keyboard. Thus, $20 is 
  312.     the space character and $0C is the formfeed character.
  313.     
  314.     The backslash character is used to represent special characters and to 
  315.     make interpretation of any following character literal.
  316.     
  317.         \t        tab 
  318.         \r        return ($0D)
  319.         \l        linefeed ($0A)
  320.         \f        formfeed ($0C)
  321.         
  322.     and
  323.         \\        backslash
  324.         \[        right square bracket, etc.
  325.         
  326.     Hex ($00) and backslash character codes are the only elements of the 
  327.     selection expression syntax that can appear in the Replace string of 
  328.     the “Find and Replace” dialog and then only if the “Selection Expression” 
  329.     radio button is selected.
  330.     
  331. Fat Binary
  332.  
  333.     Versions after 1.4 are distributed as a fat binary. That means they 
  334. contain both Motorola 680x0 and PowerPC native code. With two sets of binary
  335. code, the fat binary file occupies about 140K more disk space than a PowerPC 
  336. or 680x0-specific version. If this is a handicap for you, you can strip either
  337. the PowerPC native code or the 680x0 native code out, using the new command-
  338. line commands fat2PPC or fat268k. Make a copy of PlainText and then type, for
  339. example, fat268k 'PlainText copy' <enter>. A file, named 'PlainText copy.68k',
  340. which has no PowerPC code, will appear on your disk. Rename it as you please.
  341.  
  342. ToolServer
  343.  
  344.     PlainText will send all command-line commands to ToolServer after the 
  345. ‘ToolServer’ command is given and ToolServer is available in your system for
  346. launching. At its first use, PlainText will ask you to find ToolServer. After
  347. that, it remembers the location between launches.
  348.  
  349. Bug Reports
  350.  
  351.     Send comments and complaints to:
  352.  
  353.         Mel Park
  354.         Associate Professor
  355.         Department of Anatomy and Neurobiology
  356.         University of Tennessee
  357.         855 Monroe Avenue
  358.         Memphis, TN 38163
  359.         (901) 448-5984
  360.         mpark@nb.utmem.edu
  361.  
  362. PlainText is free.
  363.  
  364. Revision History
  365.  
  366. 0.4:     Fixed Standard File System 6 incompatibilities.
  367. 0.5:     Wordwrap is now the default.
  368.          Horizontal scroll bar occurs when it should.
  369.          Wordwrap to window correctly updates window.
  370.          Fixed Out of Memory problem with add linefeeds.
  371. 0.6:     Worksheet is an option.
  372.          Added font scaling and changing.
  373.          Open, file, and line commands now work in System 6.
  374.          All text moved to resources so that PlainText can now be
  375.            internationalized.
  376. 0.7:     Added Align, Shift Left, and Shift Right functions.
  377.          Fixed bug in which a strings just past the cursor were not
  378.            found in a forward search.
  379.          Open with option key down shows all files, not just text
  380.            files.
  381. 0.8:     SaveAFile stores resources properly and no longer causes
  382.            crashes.
  383.          The Standard File dialog is no longer displayed twice for new 
  384.            files.
  385.          Typing no longer overwrites the horizontal scroll bar.
  386.          Fixed some minor annoyances in v. 0.8a, like new windows coming
  387.            up with the wrong horizonal scroll bar and the cursor not being
  388.            erased when a window is deselected.
  389. 0.9:     There were bad crashes after some combinations of “Returns to
  390.            Linefeeds” and Saves or Closes, due to an old bug in the Mac
  391.            Menu Manager. Fixed now.
  392.          Similar bug was causing the Edit Menu to disappear when “No 
  393.            Worksheet” was selected.
  394.          Worksheet and non-worksheet windows open with or without a 
  395.            Go-Away Box as they should.
  396.          Added partial support for extended keyboard (Undo, cut, paste,
  397.            copy, page up, page down).
  398.          In System 7, opening from the finder directs Standard File package
  399.            to proper directory.
  400.          Horizonal arrow keys work properly except anchor point not yet
  401.            implemented.
  402. 0.91:     Extended keyboard fully implemented.
  403.          Fixed crashes due to Menu Manager bug.
  404. 1.0:     Added entab and detab functions.
  405.          Added word wrap to line lengths
  406.          Added autoindent
  407.          These last required additions to Format dialog.
  408.          Horizontal arrow keys now have an anchor point.
  409.          Word wrap to window is default for foreign text files as well
  410.            as new ones.
  411.          Command-arrow key functions now update the scroll bars.
  412.          Fixed conditions that would could cause a window to forget 
  413.            that it was dirty, with subsequent loss of most-recently 
  414.            typed data.
  415.          Text inserted at end of a line now drawn properly.
  416.          Errors in calculating buffer length in this last condition
  417.            also fixed.
  418.          Blinking cursor no longer interferes with text.
  419.          Show Invisibles with proportional fonts now works properly.
  420.          Go-Away box appears when it should in all conditions. 
  421.          Fixed System 6 bugs--can now open from finder.
  422.          Hiliting of selection range is now always in the right place.
  423.          Inserting text beginning with a carriage return used to foul up
  424.            the line starts array. This could cause a crash.
  425.          Crashes related to marks and selections beyond the text buffer
  426.            fixed.
  427. 1.1:     Fixed crashes due to errors in writing resources.
  428.          This means that resource forks are no longer corrupted.
  429.          Word wrap to length now works for newly opened documents.
  430.          Marks stopped working in v.1.0. Fixed.
  431.          Text now updated after Tile or Stack Windows.
  432.           Scroll bars now properly hilited after Tile and Stack Windows.
  433. 1.2:     Format and date in ls -l command now correct.
  434.          Searches for Entire Word now work.
  435.          All Clipboard window deficiencies fixed, i.e. it is now updated
  436.            as it should be after cuts and copies, Menus are properly
  437.            updated when this is the selected window, and the blinking
  438.            cursor is disabled.
  439.          In large files, the blinking cursor would be displayed as a long
  440.            vertical line when the window was scrolled more than 32K pixels
  441.            beyond the insertion point. Fixed.
  442.          Line length default really set to 75. This means that the “Word 
  443.            Wrap to Length” menu item works from the very beginning.
  444.          Implemented “Revert to Saved.”
  445.          Fixed scrolling error when large blocks of text deleted.
  446. 1.2a:     When word wrap is on, Autoindent indents paragraphs, not lines.
  447.          PlainText will now open documents on locked volumes.
  448.          Saving now always flushes files to disk with every Save, even if 
  449.            it is a sleeping PowerBook disk.
  450.          Tile and Stack Windows now work properly when there is no 
  451.            worksheet.
  452.          No longer asks to save a saved new document when quitting.
  453.          Short lines nolonger pirate* the up and down arrow key cursor
  454.            movements.
  455.          Shift and align improved to work on word-wrapped paragraphs.
  456. 1.2b:     Marks now aligned after pasting text.
  457.          Will now print beyond 32K of text.
  458. 1.2c:     Marks now updated after large selections of text deleted.
  459.          Will now print invisible characters and tabs.
  460. 1.2d:     Added page numbers to printed page.
  461. 1.2.1:     First non-beta release to public servers, i.e. Info-Mac.
  462.           Restored “File open in another application” alert.
  463.           In word wrap, adding or deleting text that caused rewrapping of
  464.             paragraphs with more than 32 lines used to blank part of the 
  465.             window above the changed text. Fixed.
  466. 1.2.2     “Tile Windows” formally tiled the Worksheet window and not the 
  467.            last text window. It now excludes the Worksheet from tiling.
  468.          Added support for a Preferences file for storing defaults.
  469.          Added the stats command-line option.
  470.          Added a four-pixel tick mark at the top of each window to indicate
  471.            the printed page width, minus 1” right and left margins.
  472.          Tabs now aligned when typing in the middle of a line.
  473. 1.2.3     1.2.2 introduced a bug that caused characters typed at the beginning
  474.            of an empty window to either not be draw are drawn in the wrong
  475.            position.
  476. 1.2.4     There was still misalignment when tabs were typed. Fixed.
  477.          Added chtyp and chcre commands.
  478.          The “Find Selection” menu item now activated for locked windows.
  479.          Added the “Strip Controls” menu item.
  480. 1.2.5     Fixed curor misplacement when typing returns at the end of a text 
  481.            file with AutoIndent on.
  482.          Files without resource forks would not open. I think this bug also
  483.            caused drag-and-drop to fail for these files.
  484.          Fixed the sometimes garbled text in the confirmation dialogs.
  485.          Cut and paste now works in the Find and Replace dialogs.
  486.          “Revert to Saved” previously caused a scrolling error.
  487. 1.2.6     Deleting an entire file would not delete the file’s marks. Fixed.
  488.          Cursor initialized with each activate event.
  489. 1.2.7     “Save As…” and “Save A Copy…” will now replace an existing file in
  490.            the proper way.
  491.          Added “P” as the keyboard equivalent for printing.
  492. 1.2.8     Zooming is now to the best size for a text window and not full screen.
  493.          All other Apple guidelines for zooming now conformed to.
  494.          Scroll bars no longer drawn twice in zooming.
  495.          Stats command now works at all times.
  496.          New window opened to ideal size.
  497. 1.2.9     Fixed zooming bug introduced in 1.2.8 that caused crashes in System 6.
  498.          Several obscure coding errors turned up in using the MetroWerks
  499.            compiler. These were probably never seen by users.
  500. 1.2.9a     Further fix of zooming bug. (Thanks to Bruce Craven and Joel Martin.)
  501. 1.3         Replace now doesn’t insert an extra character.
  502.          Dialog for find and replace now modeless (thanks to David Wright).
  503.          Strip Controls no longer deletes accented characters.
  504.           The line length parameter is saved.
  505.           Tabs to Spaces used to skip every other sequential tab.
  506.           Added “Cut/Copy Lines Containing” dialog.
  507. 1.3.1     Fixed version 1.3 crashes when closing the “Unmark…” dialog.
  508.          Implemented and fixed the full set of selection expressions.
  509. 1.3.2     Prior to this, the Find function would search past the end of text. 
  510.            In some cases, this caused extra replacements in global search and
  511.            replace. That was benign. However, it caused fatal freezes in the
  512.            “Cut Lines Containing” function.
  513. 1.3.3     Added "cutlines" and "copylines" command-line equivalents. 
  514.          Command-line searchs now use the right slash (/) to indicate that
  515.            the search string is a regular expression.
  516.          Added delay to page scrolling.
  517.          Cut and paste in Standard File dialog now uses proper scrap.
  518. 1.3.4     Special characters (e.g. \t or \r) in the Replace string were ignored
  519.            if not followed by one or more ordinary characters. Fixed.
  520.          When reopening a long document, the place in view was not the same as
  521.            the one when the document was closed. Fixed.
  522.          An already open document window is now brought to the front when 
  523.            its icon is double clicked or it is selected in the “Open…” dialog.
  524.          When not using the Worksheet option, PlainText now opens a blank 
  525.            untitled window upon launch.
  526. 1.3.5     Fixed bug that made wordwrapped documents open viewing a page or so
  527.            higher than when closed. This bug had also been causing wordwrapping
  528.            to be calculated twice when a document was opened.
  529.          Fixed error in opening foreign text files in which selection 
  530.            highliting is wrong, or there are even crashes when shift-clicking
  531.            to select a region.
  532. 1.3.6     Previously, expression searches ignored the last character in a file.
  533.            Fixing this bug involved a general improvement of memory management
  534.            for PlainText and its TextEdit core code (TE32K.c).
  535.          Changing to “Word Wrap to Length” from no word-wrapping previously 
  536.            caused an error in the horizontal scroll bar. (It was either absent
  537.            or set to the wrong values.)
  538.          Find now scrolls to position found text at the upper 1/3 of a window.
  539.          Read-only files now do not change the resource fork of file they open.
  540.          Also fixed some other logic errors that allowed read-only files to be
  541.            modified.
  542.          Scrap now converted at program launch.
  543. 1.3.7     Added more error checking when opening the worksheet window.
  544.          “Save As…” and “Save A Copy…” still had a bug. New windows were not
  545.            replacing existing files.
  546. 1.3.8     Fixed bug in which a new blank worksheet was not being created when
  547.            none existed before.
  548.          “Save As…” and “Save A Copy…” still had a bug. The fix in 1.3.7 re-
  549.            introduced the bug, fixed in 1.2.7, in which a file would not re-
  550.            place itself.
  551. 1.3.9     Supports hex characters in range searches (i.e. [$01-$1F]).
  552.          Regular expression searches now work in 24-bit mode.
  553.          Shift-click crashes that occured in new documents now fixed.
  554.          Arrow cursor now obscured when typing. The underlying improvements in
  555.            cursor handling probably fixed the conditions that sometimes made
  556.            PlainText very sluggish.
  557.          Active area of text windows enlarged on the left by three pixels. This 
  558.            eases clicking to select the beginning of a line.
  559.          Scrap now passed to “Cut Lines Contianing” dialog.
  560.          Final condition where last-modified date changed with foreign text 
  561.            files removed.
  562.           The line length parameter is now properly saved when the “All Files”
  563.             button in the “Format…” dialog is clicked.
  564.           Finds from the “Find and Replace” dialog now briefly hilite the found
  565.             selection. (Thanks to Steve Witt for this and other ideas.)
  566. 1.4         1.3.9 did not switch to arrow cursor when last document closed and for
  567.            some modal dialogs.
  568.          Compiled fat binary version.
  569.          Added defatting commands.
  570.          Placed command-line commands in a STR# resource.
  571.          Commands are no longer case sensitive.
  572.          Default window width on opening now the same for foreign files as for
  573.            new windows, i.e. the printed page width with 1" margins.
  574. 1.4.1     Rewrote DoMenu methods to make cursor control more logical. Arrow,
  575.            IBeam, and Watch cursors should now be displayed when they should.
  576.          Rewrote “Strip Controls” and other conversion routines to improve 
  577.            speed.
  578.          Rewrote Marks and undo routines to be more logical. Mark menu was 
  579.            being deleted after undo.
  580.          Fixed 1.4 bug that prevented multiple command-lines commands to be
  581.            executed.
  582.          Also fixed 1.4 bug that caused the Unknown-Command error dialog to be
  583.            displayed when there was no error.
  584.          Add and Strip Line Numbers and prefixes functions added.
  585.          Added line sorting.
  586.          Hard Wrap to Length and word wrapping to length no longer produce 
  587.            lines of differing length.
  588.          Marks now properly updated after all Undoes and Convert Menu items.
  589.          Fixed bug that caused endless loop with “Copy Lines Containing” when
  590.            wrap around search was selected.
  591.          Insertions outside the visible window previously caused blank lines
  592.            or double lines to be drawn even though the text was okay.
  593.          Replace and cut functions now much faster. The screen is not scrolled
  594.            for every replace.
  595.          The Tabs/Spaces interconversion routines were rewritten to be faster,
  596.            be correct, and to correctly support undo and marks.
  597.           LF to CR and reverse conversions now recalculate line starts.
  598.          Added cut, copy, paste, and clear for columns.
  599. 1.4.2     Added support for ToolServer.
  600.          Fixed 1.4.1 bug of not redrawing window after a delete when insertion
  601.            point but not the selection range was outside the window.
  602.          Changed user interface paradigm for column editing by outlining the 
  603.            selected column and removing the beeping.
  604.          In multiple-screen systems, one arrangement of monitors previously
  605.            lead to some windows being invisible upon opening.
  606. 1.4.3     Further fixed multiple-screen bug.
  607.          Added pwd command and fixed cd to behave like MPWToolServer Directory
  608.            command.
  609.          Added p command, implementing an important AppleEvents primitive.
  610.          Added “Show Invisibles” as a menu item.
  611.          Column Paste now works when there is a selection range in the target.
  612.          Fixed several bugs with column editing.
  613. 1.4.4     Fixed case in column editing when stray dotted lines were drawn.
  614.          Command-period now aborts ToolServer scripts.
  615.          The line number actions would not act on the last line selected if it 
  616.            did not end in a return or was only partially selected.
  617. 1.5         Internal rewrite to restore object model to compliance for non-
  618.            PlainText apps. This also speeds up opening text documents.
  619.          PlainText no longer alters foreign files unless the user explicitly
  620.            Saves the file.
  621.          Foreign files now properly word-wrapped on opening.
  622.          Added cat command-line function.
  623.          Partial fix of “File Already Open” bug. Failure to complete the
  624.            opening of a file no longer leaves that file open. (1.5b2).
  625.          Added more diagnostic messages for when file opening fails (1.5b3).
  626.          Reset resource file used in all cases (1.5b4).
  627.          Scrollbars now properly updated after LF to CR and similar conversions.
  628.          Undo now works properly after sorting lines.
  629.          The “Shift Right” and “Shift Left” functions now work on the first  
  630.            line of a document.
  631.          Added Drag and Drop support (except for column editing).
  632. 1.5.1     Finally found and fixed the Sean Peisert-reported bug: PlainText did
  633.            not open files with a file system reference number ending in hex
  634.            $00.
  635. 1.5.2     Vertical scroll bars now work if the number of lines in a file
  636.               exceeds 32K.
  637.          DragLib now hard linked into app.
  638.          Dragging a clipping or other foreign drag item back out of a 
  639.            PlainText window no longer crashes.
  640.          Inserting single returns, as in Find and Replace, no longer invokes
  641.            autoindent.
  642.          Can now paste into Find & Replace dialog.
  643. 1.5.3     Fix reintroduced bug of not “Save a Copy…” not working. 
  644. 1.5.4     Typing a key with no windows open no longer causes a crash.(1.5.3a)
  645.          Non-PlainText files now open with the cursor at the beginning of file.
  646.            (1.5.3a)
  647.          Changed sleep time in attempt to fix molasses mode bug.(1.5.3a)
  648.          Added dump command-line function. (1.5.3a)
  649.          Really fixed molasses mode bug. This should also fix the occasional 
  650.            crashes reported when a key is typed, as in System 6.
  651.          Temporarily removed updating of marks in Add Linefeeds. It was 
  652.            causing crashes. This routine will be rewritten.
  653.          Changed Menu labels for conversion routines.
  654. 1.5.5     Fixed two bugs in SaveAs: doing a SaveAs on a files with marks
  655.            would cause a crass and non-dirty files were not written to disk.
  656. 1.6          Changed list of file types the PlainText will open to a resource 
  657.            ('open' resource #128) and added 'ttro' (ReadMe files) to it.
  658.          Made the Find & Replace window a sizable, scrollable one.
  659.          Fixed memory leak in Strip Controls that could cause crashes.
  660.          Special characters (e.g. $0D and \t) now correctly interpreted in the
  661.            Replace string.
  662.          Caret now neve drawn in inactive windows.
  663.          
  664. Known bugs
  665.      Unbroken text (i.e. containing no spaces) is wrapped to window width.
  666.      Part of the Numbering Parameters… not properly redrawn on some Mac models.
  667.      Some fonts have letters that extend to the right of the insertion point
  668.        cursor. These can cause stray pixels to be drawn on the screen.
  669.      With Show Invisibles on, inserting CR at beginning of text is displayed
  670.        as if on 2nd line. The first line is not scrolled. Text is okay.
  671.      Insertion point placement after a tab not intuitive.
  672.      Tabs spaced differently, in some cases, with and without invisibles.
  673.  
  674. Features to be added:
  675.      Floating window for display of text stats.
  676.      Saving a default directory
  677.      Support of a complete AppleEvent suite and rationalization.
  678.      
  679. Thanks to Bruce Craven, Doug Dyment, Scott Gruby, Ralph Muha, Florin Neumann, 
  680. Robert J. Rockefeller, Michael O’Henly, Russel N. Owen, Sean Peisert, Michael 
  681. Rice, Ted Ripberger, Rich Siegel, Albert Silverman, Charlie Wilson, Steve Witt, 
  682. David Wright, and particularly to Rich Scarlet for their many helpful comments.
  683.  
  684. ------------
  685.  
  686. * Geo-speak. A stream is pirated when its flow is diverted into a 
  687.   neighboring water course.
  688.